<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Results of <span>Northwind database tables serialization</span> benchmarks run at 06/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize each entire table from the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a> (3202 records) <strong>1</strong> Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>460508</td><th>4.08x</th><td>20432</td><td>65753</td><td>86185</td><td>86185</td><th>4.12x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>344645</td><th>3.06x</th><td>43356</td><td>152455</td><td>195811</td><td>195811</td><th>9.37x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>334213</td><th>2.96x</th><td>208538</td><td>3707438</td><td>3915976</td><td>3915976</td><th>187.37x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>118407</td><th>1.05x</th><td>63940</td><td>31580</td><td>95520</td><td>95520</td><th>4.57x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>346173</td><th>3.07x</th><td>46852</td><td>129839</td><td>176691</td><td>176691</td><th>8.45x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>112762</td><th>1x</th><td>9743</td><td>11157</td><td>20900</td><td>20900</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>247146</td><th>2.19x</th><td>22907</td><td>24770</td><td>47677</td><td>47677</td><th>2.28x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>1232</td><th>3.23x</th><td>892</td><td>285</td><td>1177</td><td>1177</td><th>4.62x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>672</td><th>1.76x</th><td>228</td><td>424</td><td>652</td><td>652</td><th>2.56x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>790</td><th>2.07x</th><td>654</td><td>1152</td><td>1806</td><td>1806</td><th>7.08x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1127</td><th>2.96x</th><td>860</td><td>718</td><td>1578</td><td>1578</td><th>6.19x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>790</td><th>2.07x</th><td>206</td><td>550</td><td>756</td><td>756</td><th>2.96x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>381</td><th>1x</th><td>110</td><td>219</td><td>329</td><td>329</td><th>1.29x</th></tr><tr class='best-time'><th class='c1'>ServiceStack TypeSerializer</th><td>598</td><th>1.57x</th><td>117</td><td>138</td><td>255</td><td>255</td><th>1x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>32721</td><th>2.62x</th><td>1290</td><td>4739</td><td>6029</td><td>6029</td><th>3.68x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>23869</td><th>1.91x</th><td>1517</td><td>8385</td><td>9902</td><td>9902</td><th>6.05x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>25264</td><th>2.02x</th><td>12750</td><td>24664</td><td>37414</td><td>37414</td><th>22.86x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>16132</td><th>1.29x</th><td>3489</td><td>2961</td><td>6450</td><td>6450</td><th>3.94x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>25229</td><th>2.02x</th><td>2284</td><td>5214</td><td>7498</td><td>7498</td><th>4.58x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>12492</td><th>1x</th><td>758</td><td>879</td><td>1637</td><td>1637</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>19140</td><th>1.53x</th><td>935</td><td>1363</td><td>2298</td><td>2298</td><th>1.40x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>7437</td><th>1.89x</th><td>341</td><td>873</td><td>1214</td><td>1214</td><th>2.84x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>6160</td><th>1.57x</th><td>615</td><td>2637</td><td>3252</td><td>3252</td><th>7.62x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>6211</td><th>1.58x</th><td>2301</td><td>5778</td><td>8079</td><td>8079</td><th>18.92x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>5247</td><th>1.34x</th><td>1277</td><td>929</td><td>2206</td><td>2206</td><th>5.17x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>6241</td><th>1.59x</th><td>629</td><td>1644</td><td>2273</td><td>2273</td><th>5.32x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>3930</td><th>1x</th><td>206</td><td>221</td><td>427</td><td>427</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>5187</td><th>1.32x</th><td>370</td><td>467</td><td>837</td><td>837</td><th>1.96x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>5236</td><th>0x</th><td>253</td><td>724</td><td>977</td><td>977</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1912</td><th>0x</th><td>374</td><td>1348</td><td>1722</td><td>1722</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>2647</td><th>0x</th><td>2497</td><td>3163</td><td>5660</td><td>5660</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1969</td><th>0x</th><td>959</td><td>889</td><td>1848</td><td>1848</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>2647</td><th>0x</th><td>608</td><td>1199</td><td>1807</td><td>1807</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>980</td><th>0x</th><td>186</td><td>-1</td><td>185</td><td>185</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>2157</td><th>0x</th><td>228</td><td>1911</td><td>2139</td><td>2139</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>331678</td><th>0x</th><td>17057</td><td>62170</td><td>79227</td><td>79227</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>165567</td><th>0x</th><td>25904</td><td>108955</td><td>134859</td><td>134859</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>199864</td><th>0x</th><td>204995</td><td>453865</td><td>658860</td><td>658860</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>78378</td><th>0x</th><td>34925</td><td>29494</td><td>64419</td><td>64419</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>204384</td><th>0x</th><td>51550</td><td>125252</td><td>176802</td><td>176802</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>60253</td><th>0x</th><td>7610</td><td>-1</td><td>7609</td><td>7609</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>169694</td><th>0x</th><td>20410</td><td>19549</td><td>39959</td><td>39959</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>400652</td><th>4.64x</th><td>16919</td><td>56869</td><td>73788</td><td>73788</td><th>4.27x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>302174</td><th>3.50x</th><td>39501</td><td>136025</td><td>175526</td><td>175526</td><th>10.15x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>290143</td><th>3.36x</th><td>183444</td><td>3662614</td><td>3846058</td><td>3846058</td><th>222.44x</th></tr><tr class='best-size'><th class='c1'>Microsoft BinaryFormatter</th><td>86323</td><th>1x</th><td>55021</td><td>23974</td><td>78995</td><td>78995</td><th>4.57x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>302158</td><th>3.50x</th><td>42065</td><td>118781</td><td>160846</td><td>160846</td><th>9.30x</th></tr><tr class='best-time'><th class='c1'>ProtoBuf.net</th><td>90569</td><th>1.05x</th><td>8098</td><td>9192</td><td>17290</td><td>17290</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>212942</td><th>2.47x</th><td>20775</td><td>21901</td><td>42676</td><td>42676</td><th>2.47x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>25851</td><th>0x</th><td>1008</td><td>5466</td><td>6474</td><td>6474</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>15365</td><th>0x</th><td>1581</td><td>7181</td><td>8762</td><td>8762</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>15410</td><th>0x</th><td>13646</td><td>27303</td><td>40949</td><td>40949</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>6819</td><th>0x</th><td>2601</td><td>3996</td><td>6597</td><td>6597</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>15449</td><th>0x</th><td>2073</td><td>6914</td><td>8987</td><td>8987</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>4044</td><th>0x</th><td>373</td><td>-1</td><td>372</td><td>372</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>13517</td><th>0x</th><td>982</td><td>1282</td><td>2264</td><td>2264</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>485</td><th>0x</th><td>131</td><td>218</td><td>349</td><td>349</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>159</td><th>0x</th><td>196</td><td>313</td><td>509</td><td>509</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>159</td><th>0x</th><td>362</td><td>554</td><td>916</td><td>916</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>628</td><th>0x</th><td>1067</td><td>550</td><td>1617</td><td>1617</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>159</td><th>0x</th><td>153</td><td>371</td><td>524</td><td>524</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>54</td><th>0x</th><td>84</td><td>-1</td><td>83</td><td>83</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>135</td><th>0x</th><td>95</td><td>78</td><td>173</td><td>173</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>486</td><th>4.42x</th><td>126</td><td>210</td><td>336</td><td>336</td><th>1.93x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>198</td><th>1.8x</th><td>194</td><td>290</td><td>484</td><td>484</td><th>2.78x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>198</td><th>1.8x</th><td>320</td><td>580</td><td>900</td><td>900</td><th>5.17x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>700</td><th>6.36x</th><td>572</td><td>577</td><td>1149</td><td>1149</td><th>6.60x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>198</td><th>1.8x</th><td>145</td><td>264</td><td>409</td><td>409</td><th>2.35x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>110</td><th>1x</th><td>88</td><td>86</td><td>174</td><td>174</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>168</td><th>1.53x</th><td>105</td><td>85</td><td>190</td><td>190</td><th>1.09x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>11521</td><th>2.79x</th><td>534</td><td>1745</td><td>2279</td><td>2279</td><th>3.38x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>8253</td><th>2.00x</th><td>733</td><td>3002</td><td>3735</td><td>3735</td><th>5.54x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>8288</td><th>2.00x</th><td>6419</td><td>8583</td><td>15002</td><td>15002</td><th>22.26x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>6032</td><th>1.46x</th><td>1592</td><td>1326</td><td>2918</td><td>2918</td><th>4.33x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>8238</td><th>1.99x</th><td>840</td><td>2065</td><td>2905</td><td>2905</td><th>4.31x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>4135</td><th>1x</th><td>321</td><td>353</td><td>674</td><td>674</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>6322</td><th>1.53x</th><td>385</td><td>523</td><td>908</td><td>908</td><th>1.35x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>6459</td><th>5.64x</th><td>330</td><td>1032</td><td>1362</td><td>1362</td><th>3.69x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>3319</td><th>2.90x</th><td>568</td><td>1692</td><td>2260</td><td>2260</td><th>6.12x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>3319</td><th>2.90x</th><td>2650</td><td>4067</td><td>6717</td><td>6717</td><th>18.20x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>2846</td><th>2.49x</th><td>1129</td><td>1095</td><td>2224</td><td>2224</td><th>6.03x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>3319</td><th>2.90x</th><td>683</td><td>1321</td><td>2004</td><td>2004</td><th>5.43x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>1145</td><th>1x</th><td>162</td><td>207</td><td>369</td><td>369</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>2789</td><th>2.44x</th><td>220</td><td>293</td><td>513</td><td>513</td><th>1.39x</th></tr>
</tbody>
</table>
</body>
</html>

